home *** CD-ROM | disk | FTP | other *** search
/ Delphi Informant Complete 1995 - 2000 / Delphi Informant Complete 1995 to 2000.iso / Delphi Informant Magazine Complete Works SOURCE CODE 1998.rar / 1998 / May / di9805bt / stream / STREAMF.PAS < prev   
Pascal/Delphi Source File  |  1995-12-27  |  4KB  |  132 lines

  1. unit StreamF;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls;
  8.  
  9. type
  10.   TStreamForm = class(TForm)
  11.     ReadBtn: TButton;
  12.     Memo1: TMemo;
  13.     MiddleBtn: TButton;
  14.     WriteBtn: TButton;
  15.     procedure ReadBtnClick(Sender: TObject);
  16.     procedure MiddleBtnClick(Sender: TObject);
  17.     procedure WriteBtnClick(Sender: TObject);
  18.   private
  19.     { Private declarations }
  20.   public
  21.     { Public declarations }
  22.     procedure ShowBuff(const Buff: array of Char;
  23.                 Count, CurrentPos: LongInt);
  24.   end;
  25.  
  26. var
  27.   StreamForm: TStreamForm;
  28.  
  29. implementation
  30.  
  31. {$R *.DFM}
  32.  
  33. procedure TStreamForm.ShowBuff(const Buff: array of Char;
  34.             Count, CurrentPos: LongInt);
  35. var
  36.   I:    Integer;
  37. begin
  38.   with Memo1 do
  39.   begin
  40.     {Convert the buffer from a null terminated
  41.      string to a Pascal string and assign it to
  42.      the first line of the memo.}
  43.     Lines[0] := StrPas(Buff);
  44.     {Show the number of bytes read and the current
  45.      position of the stream.}
  46.     Lines.Add('Bytes Read = ' + IntToStr(Count));
  47.     Lines.Add('Stream Position = ' + IntToStr(CurrentPos));
  48.   end; {with}
  49. end;
  50.  
  51. procedure TStreamForm.ReadBtnClick(Sender: TObject);
  52. var
  53.   Stream:           TFileStream;
  54.   Buff:             array[0..31] of Char;
  55.   Count:            LongInt;
  56. begin
  57.   {Create a file stream.}
  58.   Stream := TFileStream.Create('stream.bin',
  59.               fmOpenReadWrite);
  60.   try
  61.     {Read some bytes from the stream.}
  62.     Count := Stream.Read(Buff, 26);
  63.     {Put a null at the end of the buffer so you
  64.      can treat it as a null terminated string.}
  65.     Buff[Count] := #0;
  66.     {Display what you have read.}
  67.     ShowBuff(Buff, Count, Stream.Position);
  68.   finally
  69.     Stream.Free;
  70.   end; {try}
  71. end;
  72.  
  73. procedure TStreamForm.MiddleBtnClick(Sender: TObject);
  74. var
  75.   Stream:           TFileStream;
  76.   Buff:             array[0..31] of Char;
  77.   Count:            LongInt;
  78. begin
  79.   {Create a file stream.}
  80.   Stream := TFileStream.Create('stream.bin',
  81.               fmOpenReadWrite);
  82.   try
  83.     {Move the stream pointer to the location where
  84.      you want to begin reading.}
  85.     Stream.Seek(10, 0);
  86.     {Read some bytes from the stream.}
  87.     Count := Stream.Read(Buff, 5);
  88.     {Put a null at the end of the buffer so you
  89.      can treat it as a null terminated string.}
  90.     Buff[Count] := #0;
  91.     {Display what you have read.}
  92.     ShowBuff(Buff, Count, Stream.Position);
  93.   finally
  94.     Stream.Free;
  95.   end; {try}
  96. end;
  97.  
  98. procedure TStreamForm.WriteBtnClick(Sender: TObject);
  99. var
  100.   InStream,
  101.   OutStream:        TFileStream;
  102.   Buff:             array[0..31] of Char;
  103.   Count:            LongInt;
  104. begin
  105.   {Create the input file stream.}
  106.   InStream := TFileStream.Create('stream.bin',
  107.               fmOpenRead);
  108.   {Create the output file stream.}
  109.   OutStream := TFileStream.Create('stream.out',
  110.               fmCreate);
  111.   try
  112.     {Move the stream pointer to the location where
  113.      you want to begin reading.}
  114.     InStream.Seek(10, 0);
  115.     {Read some bytes from the stream.}
  116.     Count := InStream.Read(Buff, 5);
  117.     {Put a null at the end of the buffer so you
  118.      can treat it as a null terminated string.}
  119.     Buff[Count] := #0;
  120.     {Display what you have read.}
  121.     ShowBuff(Buff, Count, InStream.Position);
  122.     {Write the contents of the buffer to the output
  123.      stream.}
  124.     OutStream.Write(Buff, Count);
  125.   finally
  126.     InStream.Free;
  127.     OutStream.Free;
  128.   end; {try}
  129. end;
  130.  
  131. end.
  132.